Skip to main content

/sale

Request body:

FieldTypeRequiredFormat / constraints
documentIDinteger (int64)NoInternal document id
documentExtIDstringNoExternal document id
docTimestringNoyyyy-MM-dd HH:mm:ss
docNumberstringNoExternal document number
employeeNamestringNoCashier name
employeeFirstNamestringNoUsed when employeeName is empty
employeeLastNamestringNoUsed when employeeName is empty
discountinteger (int64)NoDocument-level discount amount
discountPrcnumber (double)NoDocument-level discount percent
discountNamestringNoDocument-level discount label
itemsarray of item objectsYesMust be non-empty
paymentsobjectNoPayment split object
extraPaymentsarray of extra payment objectsNoAdditional payment entries; also splits one receipt between several payments of the same type — see §7.14
extraParamsobject (string → string)NoExtra fields stored on the document and passed to the fiscal core as-is
tipsinteger (int64)NoFallback tips value for the cashless payment; payments.tips takes precedence
genPreviewbooleanNoIf true, requests a fiscal receipt preview (see preview_data in the response)

documentExtID is schema-optional but strongly recommended for every request — it is the idempotency/retry key used to safely recover from timeouts and unknown-delivery states. Always generate and send a unique one from your system — see §12.1.

extraParams carries fields that only the country's fiscal core interprets — the cashbox stores them on the document and forwards them untouched, so no contract change is needed when a country starts requiring a new field. Keys are country-specific; extra_params is accepted as an alias. Client/customer data for a Ghana receipt, for example:

"extraParams": {
"clientCategID": "2",
"clientCategName": "Organization",
"clientFiscalID": "C0001234567",
"clientName": "ACME Ltd",
"clientDocNum": "GHA-123456789-0",
"clientPhone": "+233201234567",
"remarks": "Delivery to the warehouse"
}

Values are trimmed; empty ones are dropped. Which of these a receipt shows or reports is the fiscal core's decision (an individual has no TIN, an organization no ID document).

Success response:

FieldTypeRequiredNotes
documentIDinteger (int64)NoInternal document id
fiscalIDstringNoFiscal document id
fiscalNumstringNoFiscal document number
fiscalUrlstringNoFiscal URL
docTimestringNoyyyy-MM-dd HH:mm:ss
printTimestringNoyyyy-MM-dd HH:mm:ss
docStatusinteger (int32)NoSee value map below
rrnstringNoCard terminal RRN of the first card payment
authstringNoAuthorization code of the first card payment
cardNumstringNoCard number (masked) of the first card payment
bankNamestringNoAcquiring bank name of the first card payment
binNamestringNoCard issuing bank (by BIN) of the first card payment
checkNumstringNoTerminal check number
printErrorinteger (int32)NoPrint error code
totalPaymentsarray of payment entriesNoPayment breakdown, one entry per payment — see §7.13 and §7.14
currency_namestringNoCurrency
documentExtIDstringNoExternal document id
preview_datastringNoReceipt preview text; present only when genPreview=true was requested

Specific values:

  • docStatus: 0 = open, 1 = closed.

auth, checkNum and success-level printError remain declared optional response fields. Current success mappers leave them null, so they are normally omitted from serialized JSON. Print failures use error-response printError (see §8.1).